package com.elitesland.b2c.tms.service;

import com.elitesland.b2c.tms.dto.TmsFareTmplDTO;
import com.elitesland.b2c.tms.vo.param.TmsFareTmplPageParamVO;
import com.elitesland.b2c.tms.vo.resp.TmsFareTmplDetailRespVO;
import com.elitesland.b2c.tms.vo.resp.TmsFareTmplPageRespVO;
import com.elitesland.b2c.tms.vo.save.TmsFareTmplSaveVO;
import com.elitesland.core.base.ApiResult;
import com.elitesland.core.base.PagingVO;

import java.util.List;

/**
 * <p>
 * 功能说明
 * </p>
 *
 * @author fred
 * @since 2021-02-03 19:06:15
 */
public interface TmsFareTmplService {

    /**
     * 新增模板
     *
     * @param saveVO 模板信息
     * @return 模板ID
     */
    ApiResult<Long> save(TmsFareTmplSaveVO saveVO);

    /**
     * 更新模板
     *
     * @param id     模板ID
     * @param saveVO 模板信息
     * @return 模板ID
     */
    ApiResult<Long> update(Long id, TmsFareTmplSaveVO saveVO);

    /**
     * 切换是否启用状态
     *
     * @param id 模板ID
     * @return 模板ID
     */
    ApiResult<Long> updateEnable(Long id);

    /**
     * 修改启用禁用状态
     *
     * @param ids     模板ID
     * @param enabled 是否启用
     * @return 模板ID
     */
    ApiResult<List<Long>> updateEnable(List<Long> ids, Boolean enabled);

    /**
     * 删除模板信息
     *
     * @param id 模板ID
     * @return 模板ID
     */
    ApiResult<Long> delete(Long id);

    /**
     * 删除模板信息
     *
     * @param ids 模板ID
     * @return 模板ID
     */
    ApiResult<List<Long>> delete(List<Long> ids);

    /**
     * 获取模板详细信息
     *
     * @param id 模板ID
     * @return 模板信息
     */
    ApiResult<TmsFareTmplDetailRespVO> get(Long id);

    /**
     * 获取模板名称
     *
     * @param id ID
     * @return 模板名称
     */
    ApiResult<String> getName(Long id);

    /**
     * 根据ID判断是否存在
     *
     * @param id ID
     * @return 是否存在
     */
    ApiResult<Boolean> exists(Long id);

    /**
     * 分页查询模板信息
     *
     * @param pageParamVO 查询参数
     * @return 模板信息
     */
    ApiResult<PagingVO<TmsFareTmplPageRespVO>> search(TmsFareTmplPageParamVO pageParamVO);

    /**
     * 根据ID查询运费信息
     *
     * @param ids 模板ID
     * @return 运费信息
     */
    ApiResult<List<TmsFareTmplDTO>> query(List<Long> ids);

}